



//clinet1

#ifndef __SOCKETMATTRANSMISSIONCLIENT_H__

#define __SOCKETMATTRANSMISSIONCLIENT_H__



#include <iostream>



//

#include <opencv2/core/core.hpp> 

#include <opencv2/highgui/highgui.hpp> 

#include <opencv2/opencv.hpp> 

#include <opencv2/imgproc/imgproc.hpp> 

//



#include <unistd.h>//Linux系统下网络通讯的头文件集合

#include <sys/types.h>

#include <sys/socket.h>

#include <netdb.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <ctype.h>

#include <errno.h>

#include <malloc.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <sys/ioctl.h>

#include <stdarg.h>

#include <fcntl.h>

#include <poll.h>

#include <sys/ioctl.h>





//using namespace cv;

using namespace std;

using namespace cv;



//待传输图像默认大小为 640*480，可修改

#define IMG_WIDTH 640	// 需传输图像的宽

#define IMG_HEIGHT 480	// 需传输图像的高

#define PACKAGE_NUM 2



//默认格式为CV_8UC3

#define BUFFER_SIZE IMG_WIDTH*IMG_HEIGHT*3/PACKAGE_NUM



#define VDMA_IOCTL_MAGIC 'M'



#define CMD_GETWIN _IO(VDMA_IOCTL_MAGIC, 0)

#define CMD_READ_DMA0 _IO(VDMA_IOCTL_MAGIC, 1)

#define CMD_READ_DMA1 _IO(VDMA_IOCTL_MAGIC, 2)

 

//

struct sentbuf

{

	char buf[BUFFER_SIZE];

	int flag;

};



 

class SocketTransmissionClient

{

public:

	SocketTransmissionClient(void);

	~SocketTransmissionClient(void); 



private:



    int client_sockfd; 

    struct sockaddr_in server_addr;//服务器

	

public:

	// 打开socket连接

	// params :	IP		服务器的ip地址

	//			PORT	传输端口

	// return : -1		连接失败

	//			1		连接成功

	int SocketConnect(const char* IP, int PORT);

	

	// 断开socket连接

	void SocketDisconnect(void);

	

	// 传输图像

	// params : image 待传输图像

	// return : -1		传输失败

	//			1		传输成功

	//int transmit(cv::Mat image);



	//编码方式传输图像

	// params : image 待传输图像

	// return : -1		传输失败

	//			1		传输成功

	int Transmit_Server(cv::Mat image);

	int Transmit_Server_2(void);

	

	int Recv_Server(void);



};





extern SocketTransmissionClient SocketMat;



#endif



/*

CV_8UC3

预定义类型的结构:

CV_<bit_depth>(S|U|F)C<number_of_channels>

其中,

(1) bit_depth---比特数---代表8bite\16bite\32bite\64bite

eg：8表示你所创建的储存图片的Mat对象中，每个像素点在内存空间所占的空间大小8bite。

(2) S|U|F

S: signed int，即有符号整型；

U: unsigned int，即无符号整型；

F: float，单精度浮点型。

(3) C<number_of_channels>：所存储的图片的通道数。

eg 1---grayImg灰度图像---是---单通道图像

2---RGB彩色图像---是---3通道图像

3---带Alpha通道的RGB彩色图像---是---4通道图像

*/









